Software makers often attempt to protect their proprietary algorithms from discovery and unauthorized duplication. Example technology used to this end involves obfuscating and/or packing the sensitive binary (executable) to make binary analysis challenging. Unfortunately, modern binary analysis and visualization tools, such as the “Visualizing Executables for Reversing and Analysis” tool (VERA, available at http://www.offensivecomputing.net/?q=node/1687), enable detection of packers and extraction of sensitive control-flow graphs to subvert these protections.
Another example technology employed by software makers involves encrypting the entire operating system and/or boot-loader of the system executing the proprietary algorithms to ensure that the system is in a trusted state for execution of the binary. The Trusted Boot (also known as tboot, offered at http://sourceforge.net/projects/tboot/) and Trusted Execution Technology (offered by Intel Corporation, Mountain View, Calif.) behave in this manner to create a trusted endpoint prior to executing the application. However, these solutions only protect an endpoint from non-volatile attacks. Once the system has booted, and even though initially secure, it can nevertheless be compromised during its execution such that the sensitive applications are extracted. In addition, hardware attacks, such as a cold-boot RAM attack, allow application duplication from even a trusted endpoint.
Existing technology fails to provide adequate protections that maintain the integrity of software while preventing malicious third parties from exploiting weaknesses in its implementation through, for instance, a key generator or other exploit.